/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package SintaticoPacote;
import SintaticoPacote.TratamentoErro.ErroTabela;
import SintaticoPacote.TratamentoErro.TabelaErros;
import compilador_full.TabelaSimbolos;
/**
 *
 * @author Laue
 */
public class entradaDeDados {

    public boolean entradadados(TabelaSimbolos tabelaSimbolos){

        if(tabelaSimbolos.getLookahead().equals("scanf"))
        {
            tabelaSimbolos.insertEscopo();

            if(tabelaSimbolos.reconhecer("scanf"))
            {
                if(tabelaSimbolos.reconhecer("("))
                {
                    if(tabelaSimbolos.getTipo().equals("identificador"))
                    {
                        if(tabelaSimbolos.reconhecer(tabelaSimbolos.getLookahead()))
                        {
                            if(tabelaSimbolos.reconhecer(")"))
                            {
                                if(tabelaSimbolos.reconhecer(";"))
                                {
                                    return true;
                                }
                                else
                                {
                                    ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                    TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                    return false; //se nao achar }
                                }
                            }
                            else
                            {
                                ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                return false; //se nao achar }
                            }
                        }
                        else
                            return false;
                    }
                    else
                    {
                        ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                        TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                        return false; //se nao achar }
                    }
                }
                else
                {
                    ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                    TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                    return false; //se nao achar }
                }
            }
            else
                return false;
        }
        else
            return false;
    }

}
